package creational;
/**
 * 创建型模式之原型模式
 * 
 * 原型模式（Prototype）主要解决在运行期建立和删除原型，用于创建重复的对象，同时又能保证性能。
 * 用原型实例指定创建对象的种类，并且通过拷贝这些原型创建新的对象。
 * 
 * @author 关关
 *
 */

public class Prototype implements Cloneable {//实现clonable接口
        ABC abc = new ABC();
    public Object clone() throws CloneNotSupportedException {//重写clone方法
        Prototype p = (Prototype) super.clone();//浅表复制
        p.abc = (ABC)this.abc.clone();//将引用类型属性也克隆一份
        return p;
    }
}
class ABC implements Cloneable {//引用类型属性也必须实现克隆接口
    public Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}